const MYSQL = require("../../sql/mysql");
const MYSQLConfig = require("../../sql/database");
const SQLName = MYSQLConfig.datasheetName.user_token;

/**
 * token 续期
 * @brief token续期将mysql数据库中的token记录的过期时间延长到指定时间,当续期成功（更新数据库后）并不会返回任何数据,当模块运行成功则表示续期成功，反之续期失败
 * @note 本模块需要传入新的续期的时间戳,并以传入的时间戳更新数据库,并不会检查新的时间戳是否是以前的时间
 * @param {object} params 需要续期的token
 * @param {string} params.token 需要续期的token
 * @param {string} params.expired 续期新的时间戳
 * @return {Promise<{code:number,msg:string} | {code:number,msg:string}>}
 */
module.exports = async (params = {}) => {
  try {
    let { token, expired } = params;
    if (!token) {
      throw { code: 500, msg: "操作失败,token不能为空" };
    } else if (!expired) {
      throw { code: 500, msg: "操作失败,过期时间不能为空" };
    }
    let updateQuery = `
        UPDATE ${SQLName}
        SET 
        expired_date = '${expired}'
        WHERE token = '${token}'
    `;
    let result = await MYSQL.queryPromise(updateQuery);
    let { affectedRows } = result;
    if (affectedRows) {
      return {
        code: 0,
        msg: "续期成功",
      };
    } else {
      throw { code: 500, msg: "续期失败,未知错误" };
    }
  } catch (error) {
    console.log(error);
    throw { code: 500, msg: "操作失败,续期token发生错误" };
  }
};
